package com.whfc.influx.dao;

import com.whfc.common.obd.ObdFrame;
import com.whfc.common.result.PageData;
import com.whfc.mach.dto.obd.*;
import com.whfc.mach.entity.AppDeviceObdLog;

import java.util.Date;
import java.util.List;

/**
 * @Description:
 * @author: xugcheng
 * @version: 1.0
 * @date: 2020-11-03 16:57
 */
public interface AppDeviceObdLogDao {

    /**
     * 插入数据
     *
     * @param log
     */
    void insert(AppDeviceObdLog log);

    /**
     * 插入数据
     *
     * @param logList
     */
    void batchInsert(List<AppDeviceObdLog> logList);

    /**
     * 批量插入数据
     *
     * @param log
     * @param frameList
     */
    void insert(AppDeviceObdLog log, List<ObdFrame> frameList);

    /**
     * 根据硬件ID查询数据
     *
     * @param deviceId
     * @param startTime
     * @param endTime
     * @param pageNum
     * @param pageSize
     * @param columns
     * @return
     */
    PageData<AppDeviceObdLogDTO> selectObdLogByDeviceId(Integer deviceId, Date startTime, Date endTime, Integer pageNum, Integer pageSize, String[] columns);

    /**
     * 查询指定时间OBD数据
     *
     * @param deviceId
     * @param time
     * @return
     */
    AppDeviceObdLogDTO selectObdLogByDeviceId(Integer deviceId, Date time);

    /**
     * 根据设备ID查询数据
     *
     * @param machId
     * @param startTime
     * @param endTime
     * @return
     */
    List<AppDeviceObdLogDTO> selectObdLogByMachId(Integer machId, Date startTime, Date endTime);

    /**
     * 根据设备ID查询数据
     *
     * @param machId
     * @param startTime
     * @param endTime
     * @param columns
     * @return
     */
    List<AppDeviceObdLogDTO> selectObdLogByMachId(Integer machId, Date startTime, Date endTime, String[] columns);

    /**
     * 查询设备时间段内的油耗
     *
     * @param machId
     * @param startTime
     * @param endTime
     * @return
     */
    ObdOilDTO selectObdOil(Integer machId, Date startTime, Date endTime);

    /**
     * 查询OBD设备一段时间内的状态
     *
     * @param machId
     * @param startTime
     * @param endTime
     * @return
     */
    ObdStateDTO selectObdState(Integer machId, Date startTime, Date endTime);

    /**
     * 查询OBD设备一段时间内的放线里程
     *
     * @param machId
     * @param startTime
     * @param endTime
     * @param column
     * @return
     */
    ObdLengthDTO selectObdLength(Integer machId, Date startTime, Date endTime, String column);

    /**
     * 查找一段时间内的油耗数据
     *
     * @param machId
     * @param startTime
     * @param endTime
     * @return
     */
    List<ObdDataDTO> selectObdOilLogByMachId(Integer machId, Date startTime, Date endTime);

    /**
     * 查找一段时间内的里程数据
     *
     * @param machId
     * @param startTime
     * @param endTime
     * @return
     */
    List<ObdDataDTO> selectObdMileLogByMachId(Integer machId, Date startTime, Date endTime);
}
